import axios, { AxiosResponse } from "axios";
import { IBaseReponse } from "../type";
import { message } from "antd";

/**
 * AxiosResponse 接受两个泛型
 * 第一个T是规定业务层的请求体类型，也就是接口定义的类型
 * 所以我们用同意的返回结构IBaseReponse
 *
 * IBaseReponse又接受一个类型 这是一个类型繁殖具体业务
 */

axios.interceptors.response.use(
  (response: AxiosResponse<IBaseReponse<any>>) => {
    //非1000code进行输出报错信息
    if (response.data.code !== 1000) {
      //提示报错信息
      message.error(response.data.message);
      //抛出错误
      throw new Error(response.data.message);
    }
    //正确的话正常返回
    return response.data.data;
  }
);
/**
 * 每次请求都加上token
 */
axios.interceptors.request.use(
  (config)=>{
    if(config.headers){
      const globalLocal = JSON.parse(localStorage.getItem('global')||'{}')
      config.headers['Authorization'] = globalLocal?.token
    }
    return config
  }
)

export default axios;
